package com.sunny.springboot2.core.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 分布式锁
 * @author sunny
 * @date 2018/11/29
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CacheLock {

    /**
     * redis锁前缀
     *
     * @author sunny
     * @date 2018/11/29
     * @return java.lang.String
     */
    String prefix() default "";

    /**
     * 过期时间 默认5秒
     *
     * @author sunny
     * @date 2018/11/29
     * @return int
     */
    int expire() default 5;

    /**
     * 超时时间单位
     *
     * @author sunny
     * @date 2018/11/29
     * @return java.util.concurrent.TimeUnit
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * Key的分隔符（默认 :）
     * 生成的Key：N:SO1008:500
     *
     * @author sunny
     * @date 2018/11/29
     * @return java.lang.String
     */
    String delimiter() default ":";
}
